package com.yang.common.util;



import lombok.extern.slf4j.Slf4j;

import java.util.HashMap;
import java.util.Map;
import java.util.UUID;

@Slf4j
public class LogUtil {

    /**
     * 开始输出日志
     */
    public Map<String,Object> startLog(String className,String key,String outMsg) throws Exception{
        Map<String, Object> map = new HashMap<>();
        map.put("startTime",System.currentTimeMillis());//开始时间
        map.put("key",key);//业务主键
        map.put("uuid", UUID.randomUUID().toString());//uuid
        map.put("className",className);//类名
        long endTime = System.currentTimeMillis();//结束时间
        log.info("|"+map.get("uuid")+"|"+map.get("className")+"|"+(endTime-(long)map.get("startTime"))+"|200|"+outMsg);
        return map;
    }

    /**
     * info日志
     */
    public void infoLog(Map<String,Object> map,String outMsg) throws Exception{
        long endTime = System.currentTimeMillis();//结束时间
        log.info("|"+map.get("uuid")+ "|"+map.get("key")+"|"+map.get("className")+"|"+(endTime-(long)map.get("startTime"))+"|200|"+outMsg);
    }

    /**
     * error日志
     */
    public void errorLog(Map<String,Object> map,String outMsg,Exception e){
        long endTime = System.currentTimeMillis();//结束时间
        log.info("|"+map.get("uuid")+"|"+map.get("key") +"|"+map.get("className")+"|"+(endTime-(long)map.get("startTime"))+"|200|"+outMsg);
        log.error("|"+map.get("uuid")+"|",e);

    }

    /*
        使用规范
        1.之间创建实体类,在代码开跑钱先执行startLog方法
        Map<String, Object> logMap = new LogUtil().startLog(getClass().getName(), "开始执行");
        2.打印日志可以直接创建对象
        new LogUtil().infoLog("info日志");
     */
}
